16. Chegou a Hora do REST¶
A minha maior necessidade para o uso do Django é para trabalhar com API REST.
Para isso, vamos fazer a devida configuração para ativar essa funcionalidade na Tabela: Tarefas que criamos.
Iniciando¶
Precisamos criar dentro da pasta core
três arquivos:
views.py, serializers.py e urls.py
Marcado
views.py
1 2 3 4 5 6 7 8 | from django.shortcuts import render from .serializers import * # ou Tarefa, ... from rest_framework import viewsets, response class TarefaViewSet(viewsets.ModelViewSet): queryset = Tarefa.objects.all() serializer_class = TarefaSerializer |
serializers.py
1 2 3 4 5 6 7 8 9 10 11 12 13 | from .models import Tarefa from rest_framework import serializers class TarefaSerializer(serializers.ModelSerializer): status_display = serializers.SerializerMethodField() def get_status_display(self, obj): return obj.get_status_display() class Meta: model = Tarefa fields = '__all__' # ('descricao', 'status') |
urls.py
1 2 3 4 5 6 7 8 9 10 | from django.urls import path, include from .views import * from rest_framework import routers router = routers.DefaultRouter(trailing_slash=True) router.register('tarefa', TarefaViewSet) urlpatterns = [ path('api/', include(router.urls)), ] |
Agora, só precisamos referenciar o arquivo core > urls.py
do core no arquivo urls.py
da aplicação.
O arquivo deverá estar assim:
1 2 3 4 5 6 | from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ] |
Fazer as alterações para que ele fique assim:
1 2 3 4 5 6 7 8 9 | from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('api.core.urls')), path('api-auth/', include('rest_framework.urls', namespace='rest_framework')), path('rest-auth/', include('rest_auth.urls')), ] |
Vamos Testar tudo agora¶
Para fazer os testes, iremos utilizar o POSTMAN. Como o mesmo é super conhecido, não será necessário explicar como instalá-lo.
Iremos fazer a validação do CRUD através das URLs abaixo:
Autenticação¶
Antes de tudo, precisamos saber que o sistema estará validando as rotas, ou seja, o usuário deverá estar autenticado para executá-las.
Para isso, precisamos obter através da rota abaixo o TOKEN JWT que será utilizado posteriormente em todas as operações para a realização das outras operações.
http://localhost:8081/rest-auth/login/
Method: POST url: http://localhost:8081/rest-auth/login/ Headers: Content-Type = application/json raw { "username": "admin", "password": "admin123" }
Conforme você viu pela imagem acima, o DJANGO nos retornou o token JWT:
{ "key": "52825719dbd5d629efef041044ef5edb7707b2c1" }
Agora basta usarmos ele nas próximas requisições.
http://localhost:8081/api/tarefa
Method: GET url: http://localhost:8081/api/tarefa Headers: Authorization = Token 52825719dbd5d629efef041044ef5edb7707b2c1
http://localhost:8081/api/tarefa/2/
Method: PUT url: http://localhost:8081/api/tarefa/2/ Headers: Authorization = Token 52825719dbd5d629efef041044ef5edb7707b2c1 Body: raw { "id": 2, "descricao": "Testando edição da Tarefa", "status": "P" }
http://localhost:8081/api/tarefa/
Method: POST url: http://localhost:8081/api/tarefa/ Headers: Authorization = Token 52825719dbd5d629efef041044ef5edb7707b2c1 Body: raw { "descricao": "Demonstrando como cadastrar uma tarefa...", "status": "P" }
http://localhost:8081/api/tarefa/2/
Method: DELETE url: http://localhost:8081/api/tarefa/2/ Headers: Authorization = Token 52825719dbd5d629efef041044ef5edb7707b2c1